package com.hyf.eduservice;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.junit.Test;

public class CodeGenerator {
		@Test
		public void main1() {
			// 1、创建代码生成器
			AutoGenerator mpg = new AutoGenerator();
			// 2、全局配置
			GlobalConfig gc = new GlobalConfig();
			String projectPath = System.getProperty("user.dir");
			System.out.println(projectPath);
			String weizer="E:\\idea项目目录\\HYFSpringBoot\\HYFservice\\HYFservice-edu";
			gc.setOutputDir(weizer + "/src/main/java");
			gc.setAuthor("atguigu");
			gc.setOpen(false); //生成后是否打开资源管理器
			gc.setFileOverride(false); //重新生成时文件是否覆盖
        /*
         * mp生成service层代码，默认接口名称第一个字母有 I
         * UcenterService
         * */
			gc.setServiceName("%sService"); //去掉Service接口的首字母I
			gc.setIdType(IdType.ID_WORKER_STR); //主键策略
			gc.setDateType(DateType.ONLY_DATE);//定义生成的实体类中日期类型
			gc.setSwagger2(true);//开启Swagger2模式
			mpg.setGlobalConfig(gc);
			// 3、数据源配置
			DataSourceConfig dsc = new DataSourceConfig();
			dsc.setUrl("jdbc:mysql://localhost:3306/springboot?serverTimezone=GMT%2B8");
			dsc.setDriverName("com.mysql.cj.jdbc.Driver");
			dsc.setUsername("root");
			dsc.setPassword("123456");
			dsc.setDbType(DbType.MYSQL);
			mpg.setDataSource(dsc);
			// 4、包配置
			PackageConfig pc = new PackageConfig();
			pc.setModuleName("serviceedu"); //模块名
			pc.setParent("com.hyf");
			pc.setController("controller");
			pc.setEntity("entity");
			pc.setService("service");
			pc.setMapper("mapper");
			mpg.setPackageInfo(pc);
			// 5、策略配置
			StrategyConfig strategy = new StrategyConfig();
			strategy.setInclude("edu_comment");// 所生成代码的表名称
			strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
			strategy.setTablePrefix(pc.getModuleName() + "_"); //生成实体时去掉表前缀
			strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略
			strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作
			strategy.setRestControllerStyle(true); //restful api风格控制器
			strategy.setControllerMappingHyphenStyle(true); //url中驼峰转连字符
			mpg.setStrategy(strategy);
			// 6、执行
			mpg.execute();
		}
	}
